// 2、写一个函数 去读取这个文件有多少行数据
// fgets()从流中最多读取一个小于size的字符，并将它们存储到s所指向的缓冲区中。读取在EOF或换行符之后停止。
// 如果读取换行符，则将其存储到缓冲区中。
// 终止空字节('le')存储在缓冲区中的最后一个字符之后。
#include <stdio.h>
int Read_Lines(char *file_1);
int countLines(const char *filename)
{
    FILE *fp = fopen(filename, "r");
    if (fp == NULL)
    {
        perror("文件打开失败");
        return -1;
    }
    int lineCount = 0;
    char buffer[1024];
    int t = 0;
    // 逐行读取文件内容
    while (fgets(buffer, sizeof(buffer), fp) != NULL)
    {
        lineCount++;
       printf("第%d行有%ld个字\n",lineCount,ftell(fp) - t - 1 );
        t = ftell(fp);
    }

    // 关闭文件
    fclose(fp);

    return lineCount;
}

int main()
{
    const char *filename = "test.txt";
    int lines = countLines(filename);
    int num = Read_Lines("test.txt");

    if (lines != -1)
    {
        printf("这个文件有 %d 行.\n", lines);
    }

    return 0;
}
int Read_Lines(char *file_1)
{
    FILE *fp = fopen(file_1, "r+");
    char str[100];
    int num;
    while (1)
    {
        fgets(str, 100, fp);
        // fseek(fp, -1, SEEK_CUR);
        if ('\n' == fgetc(fp))
        {
            num++;
        }
        if (EOF == fgetc(fp))
        {
            num++;
            break;
        }
    }
    return num;
}